@echo off
setlocal enabledelayedexpansion

echo ==================================
echo     局域网IM聊天系统构建脚本
echo ==================================

:: 检查Java环境
echo 正在检查Java环境...
java -version >nul 2>&1
if %errorlevel% neq 0 (
  echo 错误: 未检测到Java环境，请安装JDK 8或更高版本。
  exit /b 1
)

:: 检查Node.js环境
echo 正在检查Node.js环境...
node -v >nul 2>&1
if %errorlevel% neq 0 (
  echo 错误: 未检测到Node.js环境，请安装Node.js 12或更高版本。
  exit /b 1
)

:: 检查npm环境
echo 正在检查npm环境...
npm -v >nul 2>&1
if %errorlevel% neq 0 (
  echo 错误: 未检测到npm环境，请确保npm已正确安装。
  exit /b 1
)

:: 设置工作目录变量
set "ROOT_DIR=%cd%"
set "BACKEND_DIR=%ROOT_DIR%"
set "FRONTEND_DIR=%ROOT_DIR%\frontend"
set "DIST_DIR=%ROOT_DIR%\dist"

:: 创建发布目录
echo 正在创建发布目录...
if exist "%DIST_DIR%" rmdir /s /q "%DIST_DIR%"
mkdir "%DIST_DIR%"
mkdir "%DIST_DIR%\uploads"

:: 构建后端项目
echo 正在构建后端项目...
cd "%BACKEND_DIR%"
call mvn clean package -DskipTests
if %errorlevel% neq 0 (
  echo 错误: 后端项目构建失败。
  exit /b 1
)

:: 复制后端jar到发布目录
echo 正在复制后端文件到发布目录...
copy "%BACKEND_DIR%\target\im-chat-0.0.1-SNAPSHOT.jar" "%DIST_DIR%\im-server.jar"

:: 构建前端项目
echo 正在构建前端项目...
cd "%FRONTEND_DIR%"
call npm install
if %errorlevel% neq 0 (
  echo 错误: 前端依赖安装失败。
  exit /b 1
)

call npm run build
if %errorlevel% neq 0 (
  echo 错误: 前端项目构建失败。
  exit /b 1
)

:: 复制package.json和nw-builder.js到dist目录
echo 正在复制打包所需文件...
copy "%FRONTEND_DIR%\package.json" "%FRONTEND_DIR%\dist\package.json"
copy "%FRONTEND_DIR%\nw-builder.js" "%FRONTEND_DIR%\dist\nw-builder.js"

:: 打包NW.js应用
echo 正在打包为桌面应用...
cd "%FRONTEND_DIR%\dist"
call node nw-builder.js
if %errorlevel% neq 0 (
  echo 错误: NW.js打包失败。
  exit /b 1
)

:: 复制NW.js打包结果到发布目录
echo 正在复制前端文件到发布目录...
xcopy "%FRONTEND_DIR%\dist\build\im-chat-client\win64\*" "%DIST_DIR%\client\" /E /I /Y

:: 创建启动脚本
echo 正在创建启动脚本...

:: 创建启动服务器的脚本
echo @echo off > "%DIST_DIR%\start-server.bat"
echo echo 正在启动服务器，请勿关闭此窗口... >> "%DIST_DIR%\start-server.bat"
echo java -jar im-server.jar >> "%DIST_DIR%\start-server.bat"

:: 创建启动客户端的脚本
echo @echo off > "%DIST_DIR%\start-client.bat"
echo echo 正在启动客户端... >> "%DIST_DIR%\start-client.bat"
echo start client\im-chat-client.exe >> "%DIST_DIR%\start-client.bat"

:: 创建一键启动脚本（同时启动服务端和客户端）
echo @echo off > "%DIST_DIR%\start.bat"
echo echo 正在启动IM聊天系统... >> "%DIST_DIR%\start.bat"
echo start start-server.bat >> "%DIST_DIR%\start.bat"
echo timeout /t 5 >> "%DIST_DIR%\start.bat"
echo start start-client.bat >> "%DIST_DIR%\start.bat"

:: 创建README文件
echo 正在创建README文件...
echo # 局域网IM聊天系统 > "%DIST_DIR%\README.txt"
echo. >> "%DIST_DIR%\README.txt"
echo ## 使用说明 >> "%DIST_DIR%\README.txt"
echo. >> "%DIST_DIR%\README.txt"
echo 1. 运行 start.bat 一键启动服务器和客户端 >> "%DIST_DIR%\README.txt"
echo 2. 或分别运行 start-server.bat 和 start-client.bat >> "%DIST_DIR%\README.txt"
echo 3. 默认数据库配置为 localhost:3306/im_db，用户名和密码均为 root >> "%DIST_DIR%\README.txt"
echo 4. 请确保MySQL数据库已启动并创建了im_db数据库 >> "%DIST_DIR%\README.txt"
echo. >> "%DIST_DIR%\README.txt"
echo ## 注意事项 >> "%DIST_DIR%\README.txt"
echo. >> "%DIST_DIR%\README.txt"
echo 1. 服务器端口默认为8080，可在配置文件中修改 >> "%DIST_DIR%\README.txt"
echo 2. 上传的文件保存在uploads目录中 >> "%DIST_DIR%\README.txt"
echo 3. 确保Java 8及以上版本已安装 >> "%DIST_DIR%\README.txt"

echo ==================================
echo 构建完成！发布文件在 %DIST_DIR% 目录下
echo ==================================

:: 返回到原始目录
cd "%ROOT_DIR%"

endlocal 